Ciri-ciri bahasa pengaturcaraan Bahasa_pengaturcaraan

Setiap bahasa pengaturcaraan boleh digambarkan sebagai satu set spesifikasi yang formal dengan sintaks, perbendaharaan kata, dan maksud. Spesifikasi ini termasuk:

  • Data dan struktur data
  • Arahan dan Aliran Kawalan (Control Flow)
  • Mekanisme rujukan dan penggunaan semula
  • Falsafah reka bentuk

Kebanyakan bahasa yang diguna secara meluas (atau yang telah diguna dalam tempoh yang lama), mempunyai badan piawaian yang sering bermesyuarat untuk mencipta dan menerbit bahasa tersebut dengan definisi formal, dan membincangkan tentang mengembangkan atau menambah definisi yang sedia ada.

Data dan struktur data

Di dalam sebuah komputer digital yang moden, data disimpan dalam bentuk binari (keadaan pasang-tutup - on-off state). Data biasanya mewakili maklumat dalam dunia nyata seperti nama, akaun bank, dan pengukuran. Maka, data tahap rendah diatur oleh Bahasa Pengaturcaraan kepada konsep tahap tiggi tersebut.

Sistem tertentu di mana data diatur di dalam sebuah atur cara, ialah sistem jenis (type system) bagi sesebuah bahasa pengaturcaraan. Reka bentuk dan pemahaman tentang sistem jenis dipanggil Teori Jenis. Bahasa Pengaturcaraan boleh diklasifikasikan sebagai jenis statik (statically typed), dan jenis dinamik (dynamically typed).

Bahasa Jenis Statik boleh dipecahkan lagi kepada bahasa dengan jenis manifestasi (di mana jenis bagi setiap pembolehubah (variable) dan penakrifan fungsi (function declaration) ditakrif secara tepat), dan Bahasa Jenis Rujukan (type-infered).Biasanya Bahasa Jenis Rujukan dan Bahasa Jenis Dinamik dipanggil Jenis Pasif (latently typed).

Bagi Bahasa Jenis Statik, selalunya terdapat Jenis yang bertakrif(pre-defined type), bagi setiap data (contohnya nombor dalam lingkungan tertentu, serta rentetan aksara-strings of letters), dan pembolehubah hanya mengandungi satu Jenis yang tetap, dan hanya membenarkan operasi tertentu saja (yakni, nombor tidak boleh bertukar menjadi nama, dan sebaliknya). Contoh Bahasa Jenis Statik ialah bahasa pengaturcaraan C, C++, dan Java.

Bahasa Jenis Dinamik menganggap semua lokasi data serupa. Oleh itu, operasi yang tidak dibenarkan (seperti melakukan proses tambahan dengan nama, atau menyusun nombor mengikut huruf) tidak akan menghasilkan ralat sehingga masa larian. Contoh Bahasa Jenis Dinamik ialah Lisp, JavaScript, Tcl, dan Prolog.

Bahasa Jenis Rujukan menganggap kesemua data tidak mempunyai jenis, tetapi melakukan analisis mendalam tentang bagaimana aturcara mengguna data, bagi menentukan operasi mudah yang perlu dilaksanakan terhadap data. Dengan ini, ia boleh mengenali tentang jenis pembolehubah pada masa kompil. Bahasa Jenis Rujukan lebih fleksibel untuk digunakan, dan menghasilkan aturcara yang lebih berkesan. Walau bagaimanapun, keupayaan ini adalah sukar untuk disertakan di dalam Bahasa Pengaturcaraan biasa. Oleh itu Bahasa Pengaturcaraan jenis ini agak sedikit. Contoh Bahasa Jenis Rujukan adalah MUMPS, dan ML.


Kebanyakan Bahasa menyediakan cara untuk menghimpun Struktur Data yang kompleks daripada Jenis yang sedia ada dan mengkaitkan nama kepada Gabungan Jenis yang baru ini (dengan penggunaan Array, Senarai, Longgokan, Fail).

Bahasa Pengaturcaraan Berorientasikan Objek membenarkan Juruaturcara menakrifkan Jenis Data yang dipanggil Objek. Objek mempunyai fungsi dan pembolehubahnya tersendiri(dipanggil method, dan attribut). Sebuah aturcara yang mengandungi objek membenarkan objek bekerja secara bebas tetapi berinteraksi dengan aturcara-aturcara bawahan (sub-programs). Interaksi tersebut boleh direkabentuk, pada masa pengkodan, untuk mensimulasi interaksi objek nyata. Fungsi ini amat berguna dan intuitif(intuitive). Aturcara seperti Python dan Ruby telah berkembang sebagai Bahasa Berorientasikan Objek. Bahasa ini amat mudah dipelajari dan digunakan, dan semakin popular di kalangan para juruaturcara professional, di samping ia terbuka kepada pengguna bukan professional.

Selain daripada bila dan bagaimana perhubungan antara ekspresi dan Jenis ditentukan, terdapat juga persoalan Jenis apa yang Bahasa tersebut takrifkan, dan Jenis apa yang ia tentukan sebagai nilai ekspresi(expressed values), dan sebagai nilai bernama (denoted values). Bahasa Pengaturcaraan tahap rendah, seperti C, biasanya membenarkan aturcara menamakan lokasi memori, kawasan memori, dan pembolehubah statik masa kompil(compile-time contants), disamping membenarkan ekspresi mengembalikan nilai yang boleh dimuat di dalam daftar mesin. Bahasa ANSI C mengembangkan ciri-ciri ini, dan membenarkan ekspresi mengembalikan nilai struct juga.

Bahasa Fungsi (Functional Language) biasanya membenarkan pembolehubah menamakan nilai proses masa larian secara terus. Bahasa yang menggunakan pungutan sampah (garbage collection) adalah bebas untuk membenarkan data struktur sebagai nilai expresi, atau nilai bernama.

Arahan dan aliran kawalan

Setelah data dispesifikasikan, mesin kemudiannya diarahkan cara melakukan operasi pada data. Ungkapan mudah boleh dispesifikasikan mengguna katakunci, atau mengguna stuktur tatabahasa yang jelas. Setiap Bahasa mengambil unit-unit daripada ungkapan dan menggabungkan mereka menggunakan sistem aturan. Bergantung dengan Bahasa, cara yang berbeza digunakan untuk menyusun ungkapan mudah kepada kumpulan. Ini membenarkan pengguna untuk menulis aturcara yang berupaya untuk menerima bermacam-macam input, dan tidak hanya tertakluk pada nilai yang terhad. Tambahan lagi, selain arahan untuk memanipulasi data, arahan lain yang biasa digunakan dalam Bahasa Pengaturcaraan adalah arahan untuk Aliran Kawalan (cawangan, takrifan case, loop, jejakbalik, fungsi komposisi) .

Mekanisme rujukan dan guna semula

Idea di sebalik Rujukan (reference), ialah perlunya sesuatu cara untuk menetapkan muatan storan (storage space) secara tidak langsung. Cara yang biasa digunakan ialah menerusi pembolehubah bernama. Bergantung dengan Bahasa, rujukan mungkin berupa penunjuk (pointer) kepada muatan storan lain, yang disimpan dalam bentuk pembolehubah (atau satu kumpulan pembolehubah). Serupa dengan cara penamaan storan (menggunakan penunjuk), ialah cara untuk menamakan satu kumpulan arahan. Kebanyakan Bahasa Pengaturcaraan menggunakan panggilan Makro, panggilan prosedur, atau panggilan fungsi, sebagai ungkapan yang mengguna nama tersebut. Penggunaan nama simbolik dengan cara ini membolehkan aturcara menjadi lebih fleksibel, selain membolehkan penggunaan semula aturcara (reusability). Rujukan tidak langsung kepada aturcara yang ada, atau bahagian data sedia ada, membenarkan kebanyakan Bahasa Pengaturcaraan Berorientasikan Aplikasi untuk menyatukan operasi biasa seolah-olah ia termasuk di dalam Bahasa Pengaturcaraan.